Low-density parity check (LDPC) codes are a class of linear block error correcting codes (ECCs). The name comes from the characteristic of their parity check matrix which contains only a few 1's in comparison to the amount of 0's. Their main advantage is that they provide an error correction performance that is very close to the capacity for many different types of channels and linear time complex algorithms for decoding. Furthermore, they are suited for implementations that make heavy use of parallelism.
In some computing systems, LDPC codes are used for communication of data to and from memory devices. LDPC decoders lose significant error correcting performance due to (1) asymmetry in the underlying channel, such as when interfacing with NAND flash memory and a type of non-volatile memory known as a three-dimensional cross-point memory (commercially available as 3D XPoint™ (3DXP) from Intel Corporation) and (2) failed dies, which make a section of the codeword to have high error rate in comparison to the rest of the codeword. In other words, the channel is known to behave as a binary asymmetric channel, which could flip 1's to 0's and 0's to 1's (e.g., generating errors in the data being communicated) with unequal probabilities and the channel can have different characteristics for different dies.